<template>
    <van-form @submit="check">
        <van-field
            v-model="business.email"
            name="email"
            label="邮箱"
            placeholder="请输入邮箱"
            readonly
            :rules="[
                { required: true, message: '请输入邮箱' },
                {
                    pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
                    message: '邮箱格式不正确',
                },
            ]"
        />

        <van-field
            v-model="vercode"
            name="vercode"
            center
            clearable
            label="邮箱验证码"
            placeholder="请输入邮箱验证码"
            :rules="[{ required: true, message: '请输入邮箱验证码' }]"
        >
            <template #button>
                <van-button
                    size="small"
                    type="primary"
                    @click="send"
                    :disabled="disabled"
                    >{{ msg }}</van-button
                >
            </template>
        </van-field>

        <div style="width: 50%; margin: 2em auto">
            <van-button round block type="primary" native-type="submit">
                提交
            </van-button>
        </div>
    </van-form>
</template>

<script setup>
    const { proxy } = getCurrentInstance();

    let business = proxy.$business;
    let vercode = ref('');
    let msg = ref('发送验证码');
    let disabled = ref(false);

    // 挂载前的生命周期
    onBeforeMount(() => {
        if(!business.value.email)
        {
            proxy.$fail({
                message:'请先去基本资料填写邮箱',
                onClose:() =>
                {
                    proxy.$router.back();
                }
            });

            return false;
        }

        if(business.value.auth == 1)
        {
            proxy.$success({
                message:'您已验证成功，无须重复验证',
                onClose:() =>
                {
                    proxy.$router.back();
                }
            })
        }
    })

    //邮箱发送
    const send = async () =>
    {
        let result = await proxy.$POST({
            url:'/business/email',
            params:{
                busid:business.value.id,
                email:business.value.email,
                action:'send'
            }
        })

        if(result.code === 1)
        {
            msg.value = '正在发送中.....';
            disabled.value = true;
            msg.value = 60;

            var T = setInterval(() =>
            {
                if (msg.value <= 0) {
                    //停止定时器
                    clearInterval(T);
                    msg.value = '重新发送验证码';
                    disabled.value = false;
                } else {
                    msg.value--;
                }
            }, 100);

            proxy.$success(result.msg);

            return false;
        }else
        {
            proxy.$fail(result.msg);

            return false;
        }
    }

    //邮箱验证
    const check = async (values) => 
    {
        let result = await proxy.$POST({
            url:'/business/email',
            params:{
                busid:business.value.id,
                email:business.value.email,
                action:'check',
                vercode:vercode.value
            }
        })

        if(result.code === 1)
        {
            proxy.$success({
                message:result.msg,
                onClose:() =>
                {
                    proxy.$router.back();

                    return false;
                }
            })
        }else
        {
            proxy.$fail(result.msg);

            return false;
        }
    }
</script>
